package com.localking.algorithm.leetcode.array

/**
 * Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number.
 * The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2.
 *
 * Note:
 * * You returned answers(both index 1 and index 2) are not zero-based.
 * * You may assume that each input would have exactly one solution and you may not use the same element twice.
 *
 * Example:
 * Input: numbers = [2, 7, 11, 15], target = 9
 * Output: [1, 2]
 * Explanation: The sum of 2 and 7 is 9, Therefore index1 = 1, index2 = 2.
 *
 * @author jinbo
 */
object TwoSum {
  def main(args: Array[String]): Unit = {
    val numbers = Array(2, 7, 11, 15)
    println(twoSum(numbers, 9).mkString("[", ",", "]"))
  }

  def twoSum(numbers: Array[Int], target: Int): Array[Int] = {
    var index1 = 0
    var index2 = numbers.length - 1
    while (index1 < index2) {
      val sum = numbers(index1) + numbers(index2)
      if(sum == target) {
        return Array(index1 + 1, index2 + 1)
      } else if(sum < target) {
        index1 += 1
      } else if(sum > target) {
        index2 -= 1
      }
    }
    null
  }
}
